package br.ufal.questione.web;

import java.io.Serializable;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import br.ufal.questione.dao.PerguntaDao;
import br.ufal.questione.dao.QuestionarioDao;
import br.ufal.questione.domain.Pergunta;
import br.ufal.questione.domain.Questionario;

@Controller
@RequestMapping("/questionarios")
public class PerguntaController implements Serializable {

	private static final long serialVersionUID = -3047281267979543344L;
	
	@Autowired
	private PerguntaDao perguntaDao;
	
	@Autowired
	private QuestionarioDao questionarioDao;
	
	@RequestMapping(value = "{idQuestionario}/perguntas/nova", method = RequestMethod.GET)
	public String setUpForm(Model model, @PathVariable("idQuestionario") Long idQuestionario) {
		Questionario questionario = this.questionarioDao.consultar(idQuestionario);
		
		model.addAttribute("questionario", questionario);
		
		return "pergunta";
	}
	
	@RequestMapping(value = "{idQuestionario}/perguntas/nova", method = RequestMethod.POST)
	public String cadastrar(Pergunta pergunta) {
		pergunta.setOrdem(this.perguntaDao.getUltimaOrdemPergunta(pergunta.getQuestionario()));
		this.perguntaDao.inserir(pergunta);
		
		return "redirect:/questionarios/" + pergunta.getQuestionario().getId() + "/editar";
	}
	
	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/excluir", method = RequestMethod.GET)
	public String excluir(@PathVariable("idPergunta") Long idPergunta,  @PathVariable("idQuestionario") Long idQuestionario) {
		
		Pergunta pergunta = this.perguntaDao.consultar(idPergunta);
		
		this.perguntaDao.excluir(pergunta);
		this.perguntaDao.reorganizarPerguntas(new Questionario(idQuestionario));
		
		return "redirect:/questionarios/" + idQuestionario + "/editar";
	}	
	
	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/subir", method = RequestMethod.GET)
	public String subir(@PathVariable("idPergunta") Long idPergunta,  @PathVariable("idQuestionario") Long idQuestionario) {
		this.perguntaDao.subirOrdem(new Pergunta(idPergunta));
		this.perguntaDao.reorganizarPerguntas(new Questionario(idQuestionario));
		return "redirect:/questionarios/" + idQuestionario + "/editar";
	}

	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/descer", method = RequestMethod.GET)
	public String descer(@PathVariable("idPergunta") Long idPergunta,  @PathVariable("idQuestionario") Long idQuestionario) {
		this.perguntaDao.descerOrdem(new Pergunta(idPergunta));
		this.perguntaDao.reorganizarPerguntas(new Questionario(idQuestionario));
		return "redirect:/questionarios/" + idQuestionario + "/editar";
	}
	
}
